package com.archeanx.libx.adapter.divider

import android.content.Context
import androidx.annotation.ColorInt
import androidx.annotation.ColorRes
import androidx.core.content.ContextCompat
import androidx.recyclerview.widget.RecyclerView
import com.archeanx.libx.adapter.divider.util.XBaseDivider
import com.archeanx.libx.adapter.divider.util.XDivider
import com.archeanx.libx.adapter.divider.util.XDividerBuilder

class XRvVerticalDivider(var context: Context) : XBaseDivider(context) {
    /**
     * 分割线颜色
     */
    @ColorInt
    var dividerColor = 0
        set(@ColorRes value) {
            field = ContextCompat.getColor(context, value)
        }

    /**
     * 分割线高度(dp)
     */
    var dividerHeight = 1f

    /**
     * 距离开始边距
     */
    var marginStart = 0f

    /**
     * 距离结束边距
     */
    var marginEnd = 0f

    /**
     * 是否显示第一个item上面的 分割线
     */
    var isShowTopLine = false

    /**
     * 是否显示底部分割线
     */
    var isShowBottomLine = false

    /**
     * 是否在只有一个itme时，显示底部分割线
     */
    var isSingleItemShowBottomLine = true

    private val divider1 by lazy {
        XDividerBuilder().setTopSideLine(true, dividerColor, dividerHeight, marginStart, marginEnd)
                .setBottomSideLine(true, dividerColor, dividerHeight, marginStart, marginEnd)
                .create()
    }
    private val divider2 by lazy {
        XDividerBuilder()
                .setBottomSideLine(true, dividerColor, dividerHeight, marginStart, marginEnd)
                .create()
    }


    override fun getDivider(adapter: RecyclerView.Adapter<*>?, itemPosition: Int): XDivider {
     return   if (adapter == null) {
            defaultDivider
        } else {
            if (!isSingleItemShowBottomLine && adapter.itemCount == 1) {
                //单个item时，不显示底部分割线
                defaultDivider
            }else if (itemPosition == 0 && isShowTopLine) {
                //是否显示顶部分割线
                divider1
            } else if (!isShowBottomLine && adapter.itemCount == itemPosition + 1) {
                //不显示底部分割线
                defaultDivider
            }else{
                divider2
            }
        }

    }
}